// Copyright 2022 a.o.smith ALL Rights Reserved
package com.liuxinlong.modules.material.service;

import java.util.List;
import java.util.Map;

import com.liuxinlong.common.ImportResp;
import com.liuxinlong.modules.material.dto.MaterialStatusImportDto;

import javax.servlet.http.HttpServletResponse;

/**
 * 物料状态变更service接口
 *
 * @author liuxinlong@hotwater.com.cn
 * @version 1.0.0
 * @since 2022年2月17日
 */
public interface MaterialStatusService {

    /**
     * 分页查询物料状态变更记录
     *
     * @param queryParam 查询条件
     * @return 物料状态变更分页记录
     */
    List<Map<String, Object>> pageMaterialStatusRecord(Map<String, Object> queryParam);

    /**
     * 查询物料状态变更记录数
     *
     * @param queryParam 查询条件
     * @return 物料状态变更记录数
     */
    int getStatusRecordCount(Map<String, Object> queryParam);

    /**
     * 批量更新物料状态
     *
     * @param targetIds    目标物料id
     * @param region       域
     * @param targetStatus 目标物料状态
     */
    void batchUpdateMaterialStatus(String targetIds, String region, String targetStatus);

    /**
     * 删除物料状态变更记录
     *
     * @param id 物料状态变更记录id
     */
    void deleteMaterialStatus(String id);

    /**
     * 导入数据预处理
     *
     * @param fileName 文件地址
     * @return 预处理数据
     */
    ImportResp importDetails(String fileName);

    /**
     * 批量新增变更记录详情信息
     *
     * @param dataList 变更记录详情列表
     * @return 失败数据
     */
    ImportResp batchAddDetail(List<MaterialStatusImportDto> dataList);

    /**
     * 导出物料状态变更记录
     *
     * @param startTime 变更起始时间
     * @param response  response
     */
    void exportMaterialStatus(String startTime, HttpServletResponse response);

    /**
     * 批量新增状态变更记录详情信息
     *
     * @param dataList 状态变更记录详情列表
     * @param recordId 状态变更记录id
     * @return 失败数据
     */
    ImportResp batchAddDetail(List<MaterialStatusImportDto> dataList, String recordId);

    /**
     * 修改物料状态
     *
     * @param material 物料号
     * @param region 域
     * @param targetStatus 目标状态
     */
    void updateMaterialStatus(String material,String region,String targetStatus);
}
